<!DOCTYPE html>
<html lang="en">
<head>
    
    <meta charset="utf-8">
    <title>_primary - Zero UI框架专用前端文档</title>
    
    <meta name="description" content="前端开发框架，官方地址：http://www.vertx-ui.cn" />
    
        <meta name="keywords" content="zero,zero-ui,vert.x" />
        <meta name="keyword" content="zero,zero-ui,vert.x" />
    
    
    
    <script src="scripts/prettify/prettify.js"></script>
    <script src="scripts/prettify/lang-css.js"></script>
    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/prettify.css">
    <link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
    <link type="text/css" rel="stylesheet" href="styles/zero.css">
    <script src="scripts/nav.js" defer></script>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>

<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
  <div class="navicon"></div>
</label>

<label for="nav-trigger" class="overlay"></label>

<nav >
    
    <input type="text" id="nav-search" placeholder="Search" />
    
    <h2><a href="index.html">Home</a></h2><h2><a href="http://www.vertxai.cn/document/doc-web/index.html" target="_blank" class="menu-item" id="website_link" >「Api」Zero Ai</a></h2><h2><a href="http://www.vertxui.cn/document/doc-web/index.html" target="_blank" class="menu-item" id="website_link" >「Api」Zero Ui</a></h2><h2><a href="http://www.vertxui.cn/document/doc-web-extension/index.html" target="_blank" class="menu-item" id="website_link" >「Api」Zero Ui Extension</a></h2><h2><a href="http://www.vertxui.cn" target="_blank" class="menu-item" id="website_link" >「Home」Zero UI</a></h2><h2><a href="http://www.vertxai.cn" target="_blank" class="menu-item" id="website_link" >「Home」Zero Ai</a></h2><h2><a href="http://www.vertxup.cn" target="_blank" class="menu-item" id="website_link" >「Home」Zero Framework</a></h2><h2><a href="http://www.origin-x.cn" target="_blank" class="menu-item" id="website_link" >「Home」Origin X Engine</a></h2><h3>Classes</h3><ul><li><a href="Ant.html">Ant</a><ul class='methods'><li data-type='method'><a href="Ant.html#.onAddonAfter">onAddonAfter</a></li><li data-type='method'><a href="Ant.html#.onChange">onChange</a></li><li data-type='method'><a href="Ant.html#.onDisabledDate">onDisabledDate</a></li><li data-type='method'><a href="Ant.html#.onFromTo">onFromTo</a></li><li data-type='method'><a href="Ant.html#.onMultiple">onMultiple</a></li><li data-type='method'><a href="Ant.html#.onPlaceHolder">onPlaceHolder</a></li><li data-type='method'><a href="Ant.html#.onPrefix">onPrefix</a></li><li data-type='method'><a href="Ant.html#.onReadOnly">onReadOnly</a></li><li data-type='method'><a href="Ant.html#.onSelect">onSelect</a></li><li data-type='method'><a href="Ant.html#.toConfig">toConfig</a></li><li data-type='method'><a href="Ant.html#.toDatum">toDatum</a></li><li data-type='method'><a href="Ant.html#.toDialogConfig">toDialogConfig</a></li><li data-type='method'><a href="Ant.html#.toMock">toMock</a></li><li data-type='method'><a href="Ant.html#.toOptions">toOptions</a></li><li data-type='method'><a href="Ant.html#.toOrigin">toOrigin</a></li><li data-type='method'><a href="Ant.html#.toParsed">toParsed</a></li><li data-type='method'><a href="Ant.html#.toRecord">toRecord</a></li><li data-type='method'><a href="Ant.html#.toTreeOptions">toTreeOptions</a></li><li data-type='method'><a href="Ant.html#.toUnique">toUnique</a></li></ul></li><li><a href="Cookie.html">Cookie</a><ul class='methods'><li data-type='method'><a href="Cookie.html#.get">get</a></li></ul></li><li><a href="Logger.html">Logger</a><ul class='methods'><li data-type='method'><a href="Logger.html#.filters">filters</a></li><li data-type='method'><a href="Logger.html#.layout">layout</a></li><li data-type='method'><a href="Logger.html#.mock">mock</a></li><li data-type='method'><a href="Logger.html#.render">render</a></li><li data-type='method'><a href="Logger.html#.request">request</a></li><li data-type='method'><a href="Logger.html#.response">response</a></li><li data-type='method'><a href="Logger.html#.sign">sign</a></li></ul></li><li><a href="Session.html">Session</a><ul class='methods'><li data-type='method'><a href="Session.html#.clear">clear</a></li><li data-type='method'><a href="Session.html#.get">get</a></li><li data-type='method'><a href="Session.html#.put">put</a></li><li data-type='method'><a href="Session.html#.remove">remove</a></li></ul></li><li><a href="Storage.html">Storage</a><ul class='methods'><li data-type='method'><a href="Storage.html#.clear">clear</a></li><li data-type='method'><a href="Storage.html#.get">get</a></li><li data-type='method'><a href="Storage.html#.getDirect">getDirect</a></li><li data-type='method'><a href="Storage.html#.put">put</a></li><li data-type='method'><a href="Storage.html#.remove">remove</a></li></ul></li><li><a href="Tree.html">Tree</a><ul class='methods'><li data-type='method'><a href="Tree.html#.CHILDREN">CHILDREN</a></li><li data-type='method'><a href="Tree.html#.CHILDREN_ALL">CHILDREN_ALL</a></li><li data-type='method'><a href="Tree.html#.CHILDREN_ALL_INCLUDE">CHILDREN_ALL_INCLUDE</a></li><li data-type='method'><a href="Tree.html#.PARENT">PARENT</a></li><li data-type='method'><a href="Tree.html#.PARENT_ALL">PARENT_ALL</a></li><li data-type='method'><a href="Tree.html#.PARENT_ALL_INCLUDE">PARENT_ALL_INCLUDE</a></li></ul></li></ul><h3>Modules</h3><ul><li><a href="module-_aggr.html">_aggr</a></li><li><a href="module-_ajax.html">_ajax</a><ul class='methods'><li data-type='method'><a href="module-_ajax.html#.ajax2Dialog">ajax2Dialog</a></li><li data-type='method'><a href="module-_ajax.html#.ajax2Message">ajax2Message</a></li><li data-type='method'><a href="module-_ajax.html#.ajax2True">ajax2True</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxDelete">ajaxDelete</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxDialog">ajaxDialog</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxDownload">ajaxDownload</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxEager">ajaxEager</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxError">ajaxError</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxFetch">ajaxFetch</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxGet">ajaxGet</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxMessage">ajaxMessage</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxPost">ajaxPost</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxPull">ajaxPull</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxPush">ajaxPush</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxPut">ajaxPut</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxResource">ajaxResource</a></li><li data-type='method'><a href="module-_ajax.html#.ajaxUpload">ajaxUpload</a></li><li data-type='method'><a href="module-_ajax.html#.asyncAssist">asyncAssist</a></li><li data-type='method'><a href="module-_ajax.html#.asyncData">asyncData</a></li><li data-type='method'><a href="module-_ajax.html#.asyncImage">asyncImage</a></li><li data-type='method'><a href="module-_ajax.html#.asyncMagic">asyncMagic</a></li><li data-type='method'><a href="module-_ajax.html#.asyncPromise">asyncPromise</a></li><li data-type='method'><a href="module-_ajax.html#.asyncTrue">asyncTrue</a></li><li data-type='method'><a href="module-_ajax.html#.asyncWrap">asyncWrap</a></li><li data-type='method'><a href="module-_ajax.html#.messageCatch">messageCatch</a></li><li data-type='method'><a href="module-_ajax.html#.messageFailure">messageFailure</a></li><li data-type='method'><a href="module-_ajax.html#.messageSuccess">messageSuccess</a></li><li data-type='method'><a href="module-_ajax.html#.microDelete">microDelete</a></li><li data-type='method'><a href="module-_ajax.html#.microFetch">microFetch</a></li><li data-type='method'><a href="module-_ajax.html#.microGet">microGet</a></li><li data-type='method'><a href="module-_ajax.html#.microPost">microPost</a></li><li data-type='method'><a href="module-_ajax.html#.microPush">microPush</a></li><li data-type='method'><a href="module-_ajax.html#.microPut">microPut</a></li><li data-type='method'><a href="module-_ajax.html#.rxEdict">rxEdict</a></li></ul></li><li><a href="module-_constant.html">_constant</a><ul class='members'><li data-type='member'><a href="module-_constant.html#.(%25E7%258E%25AF%25E5%25A2%2583%25E5%258F%2598%25E9%2587%258F)">(环境变量)</a></li><li data-type='member'><a href="module-_constant.html#.DEBUG">DEBUG</a></li><li data-type='member'><a href="module-_constant.html#.DEBUG_AJAX">DEBUG_AJAX</a></li><li data-type='member'><a href="module-_constant.html#.DEBUG_FORM">DEBUG_FORM</a></li><li data-type='member'><a href="module-_constant.html#.ECONOMY">ECONOMY</a></li><li data-type='member'><a href="module-_constant.html#.ENTRY_ADMIN">ENTRY_ADMIN</a></li><li data-type='member'><a href="module-_constant.html#.ENTRY_LOGIN">ENTRY_LOGIN</a></li><li data-type='member'><a href="module-_constant.html#.FORBIDDEN">FORBIDDEN</a></li><li data-type='member'><a href="module-_constant.html#.FORM_MODE">FORM_MODE</a></li><li data-type='member'><a href="module-_constant.html#.GRID">GRID</a></li><li data-type='member'><a href="module-_constant.html#.HTTP11">HTTP11</a></li><li data-type='member'><a href="module-_constant.html#.HTTP_METHOD">HTTP_METHOD</a></li><li data-type='member'><a href="module-_constant.html#.KEY_EVENT">KEY_EVENT</a></li><li data-type='member'><a href="module-_constant.html#.KEY_USER">KEY_USER</a></li><li data-type='member'><a href="module-_constant.html#.MENU_TYPE">MENU_TYPE</a></li><li data-type='member'><a href="module-_constant.html#.MIMES">MIMES</a></li><li data-type='member'><a href="module-_constant.html#.MOCK">MOCK</a></li><li data-type='member'><a href="module-_constant.html#.MONITOR">MONITOR</a></li><li data-type='member'><a href="module-_constant.html#.RX_SOURCE">RX_SOURCE</a></li><li data-type='member'><a href="module-_constant.html#.SELECTION">SELECTION</a></li><li data-type='member'><a href="module-_constant.html#.SIGN">SIGN</a></li><li data-type='member'><a href="module-_constant.html#.THEME">THEME</a></li><li data-type='member'><a href="module-_constant.html#.X_APP_ID">X_APP_ID</a></li><li data-type='member'><a href="module-_constant.html#.X_APP_KEY">X_APP_KEY</a></li><li data-type='member'><a href="module-_constant.html#.X_HEADER">X_HEADER</a></li><li data-type='member'><a href="module-_constant.html#.X_LANG">X_LANG</a></li><li data-type='member'><a href="module-_constant.html#.X_SIGMA">X_SIGMA</a></li><li data-type='member'><a href="module-_constant.html#.XT_FORMAT">XT_FORMAT</a></li></ul></li><li><a href="module-_develop.html">_develop</a><ul class='methods'><li data-type='method'><a href="module-_develop.html#.dgAjax">dgAjax</a></li><li data-type='method'><a href="module-_develop.html#.dgDebug">dgDebug</a></li><li data-type='method'><a href="module-_develop.html#.dgDiff">dgDiff</a></li><li data-type='method'><a href="module-_develop.html#.dgFileJson">dgFileJson</a></li><li data-type='method'><a href="module-_develop.html#.dgGraphic">dgGraphic</a></li><li data-type='method'><a href="module-_develop.html#.dgQuery">dgQuery</a></li><li data-type='method'><a href="module-_develop.html#.dgRouter">dgRouter</a></li><li data-type='method'><a href="module-_develop.html#.dgTodo">dgTodo</a></li><li data-type='method'><a href="module-_develop.html#.fxError">fxError</a></li><li data-type='method'><a href="module-_develop.html#.fxFailure">fxFailure</a></li><li data-type='method'><a href="module-_develop.html#.fxFatal">fxFatal</a></li><li data-type='method'><a href="module-_develop.html#.fxMessage">fxMessage</a></li><li data-type='method'><a href="module-_develop.html#.fxRedux">fxRedux</a></li><li data-type='method'><a href="module-_develop.html#.fxReject">fxReject</a></li><li data-type='method'><a href="module-_develop.html#.fxReport">fxReport</a></li><li data-type='method'><a href="module-_develop.html#.fxTerminal">fxTerminal</a></li><li data-type='method'><a href="module-_develop.html#.fxWarning">fxWarning</a></li></ul></li><li><a href="module-_element.html">_element</a><ul class='methods'><li data-type='method'><a href="module-_element.html#.elementBranch">elementBranch</a></li><li data-type='method'><a href="module-_element.html#.elementChildren">elementChildren</a></li><li data-type='method'><a href="module-_element.html#.elementChildTree">elementChildTree</a></li><li data-type='method'><a href="module-_element.html#.elementConcat">elementConcat</a></li><li data-type='method'><a href="module-_element.html#.elementDown">elementDown</a></li><li data-type='method'><a href="module-_element.html#.elementFind">elementFind</a></li><li data-type='method'><a href="module-_element.html#.elementFindDatum">elementFindDatum</a></li><li data-type='method'><a href="module-_element.html#.elementFirst">elementFirst</a></li><li data-type='method'><a href="module-_element.html#.elementFlat">elementFlat</a></li><li data-type='method'><a href="module-_element.html#.elementGrid">elementGrid</a></li><li data-type='method'><a href="module-_element.html#.elementGroup">elementGroup</a></li><li data-type='method'><a href="module-_element.html#.elementGroupDatum">elementGroupDatum</a></li><li data-type='method'><a href="module-_element.html#.elementIndex">elementIndex</a></li><li data-type='method'><a href="module-_element.html#.elementJoin">elementJoin</a></li><li data-type='method'><a href="module-_element.html#.elementMap">elementMap</a></li><li data-type='method'><a href="module-_element.html#.elementMapDatum">elementMapDatum</a></li><li data-type='method'><a href="module-_element.html#.elementParent">elementParent</a></li><li data-type='method'><a href="module-_element.html#.elementSave">elementSave</a></li><li data-type='method'><a href="module-_element.html#.elementUnique">elementUnique</a></li><li data-type='method'><a href="module-_element.html#.elementUniqueDatum">elementUniqueDatum</a></li><li data-type='method'><a href="module-_element.html#.elementUp">elementUp</a></li><li data-type='method'><a href="module-_element.html#.elementVertical">elementVertical</a></li><li data-type='method'><a href="module-_element.html#.elementWrap">elementWrap</a></li></ul></li><li><a href="module-_engine.html">_engine</a><ul class='methods'><li data-type='method'><a href="module-_engine.html#.assistIn">assistIn</a></li><li data-type='method'><a href="module-_engine.html#.cabQuery">cabQuery</a></li><li data-type='method'><a href="module-_engine.html#.capForm">capForm</a></li><li data-type='method'><a href="module-_engine.html#.capTab">capTab</a></li><li data-type='method'><a href="module-_engine.html#.configAnchor">configAnchor</a></li><li data-type='method'><a href="module-_engine.html#.configColumn">configColumn</a></li><li data-type='method'><a href="module-_engine.html#.configDialog">configDialog</a></li><li data-type='method'><a href="module-_engine.html#.configExecutor">configExecutor</a></li><li data-type='method'><a href="module-_engine.html#.configExecutors">configExecutors</a></li><li data-type='method'><a href="module-_engine.html#.configForm">configForm</a></li><li data-type='method'><a href="module-_engine.html#.configScroll">configScroll</a></li><li data-type='method'><a href="module-_engine.html#.configTab">configTab</a></li><li data-type='method'><a href="module-_engine.html#.configTable">configTable</a></li><li data-type='method'><a href="module-_engine.html#.createAction">createAction</a></li><li data-type='method'><a href="module-_engine.html#.dataIn">dataIn</a></li><li data-type='method'><a href="module-_engine.html#.dataOut">dataOut</a></li><li data-type='method'><a href="module-_engine.html#.fnOut">fnOut</a></li><li data-type='method'><a href="module-_engine.html#.fromHoc">fromHoc</a></li><li data-type='method'><a href="module-_engine.html#.fromPath">fromPath</a></li><li data-type='method'><a href="module-_engine.html#.raftForm">raftForm</a></li><li data-type='method'><a href="module-_engine.html#.rxAssist">rxAssist</a></li><li data-type='method'><a href="module-_engine.html#.rxCheckedRow">rxCheckedRow</a></li><li data-type='method'><a href="module-_engine.html#.rxCheckedTree">rxCheckedTree</a></li><li data-type='method'><a href="module-_engine.html#.rxDatum">rxDatum</a></li><li data-type='method'><a href="module-_engine.html#.rxEtat">rxEtat</a></li><li data-type='method'><a href="module-_engine.html#.rxFlow">rxFlow</a></li><li data-type='method'><a href="module-_engine.html#.rxResize">rxResize</a></li><li data-type='method'><a href="module-_engine.html#.storeApp">storeApp</a></li><li data-type='method'><a href="module-_engine.html#.storeModule">storeModule</a></li><li data-type='method'><a href="module-_engine.html#.storeUser">storeUser</a></li><li data-type='method'><a href="module-_engine.html#.writeAssist">writeAssist</a></li><li data-type='method'><a href="module-_engine.html#.writeClean">writeClean</a></li><li data-type='method'><a href="module-_engine.html#.writeSubmit">writeSubmit</a></li><li data-type='method'><a href="module-_engine.html#.writeTree">writeTree</a></li></ul></li><li><a href="module-_g.html">_g</a><ul class='methods'><li data-type='method'><a href="module-_g.html#.g2Chart">g2Chart</a></li></ul></li><li><a href="module-_is.html">_is</a><ul class='methods'><li data-type='method'><a href="module-_is.html#.isArray">isArray</a></li><li data-type='method'><a href="module-_is.html#.isAuthorized">isAuthorized</a></li><li data-type='method'><a href="module-_is.html#.isCn">isCn</a></li><li data-type='method'><a href="module-_is.html#.isCollection">isCollection</a></li><li data-type='method'><a href="module-_is.html#.isCurrency">isCurrency</a></li><li data-type='method'><a href="module-_is.html#.isDecimal">isDecimal</a></li><li data-type='method'><a href="module-_is.html#.isDiff">isDiff</a></li><li data-type='method'><a href="module-_is.html#.isEmpty">isEmpty</a></li><li data-type='method'><a href="module-_is.html#.isFunction">isFunction</a></li><li data-type='method'><a href="module-_is.html#.isInit">isInit</a></li><li data-type='method'><a href="module-_is.html#.isLogged">isLogged</a></li><li data-type='method'><a href="module-_is.html#.isNotEmpty">isNotEmpty</a></li><li data-type='method'><a href="module-_is.html#.isNumber">isNumber</a></li><li data-type='method'><a href="module-_is.html#.isObject">isObject</a></li><li data-type='method'><a href="module-_is.html#.isParent">isParent</a></li><li data-type='method'><a href="module-_is.html#.isQr">isQr</a></li><li data-type='method'><a href="module-_is.html#.isRoute">isRoute</a></li><li data-type='method'><a href="module-_is.html#.isRule">isRule</a></li><li data-type='method'><a href="module-_is.html#.isRuleAll">isRuleAll</a></li><li data-type='method'><a href="module-_is.html#.isRuleAny">isRuleAny</a></li><li data-type='method'><a href="module-_is.html#.isSame">isSame</a></li><li data-type='method'><a href="module-_is.html#.isSet">isSet</a></li><li data-type='method'><a href="module-_is.html#.isValid">isValid</a></li></ul></li><li><a href="module-_it.html">_it</a><ul class='methods'><li data-type='method'><a href="module-_it.html#.itAmb">itAmb</a></li><li data-type='method'><a href="module-_it.html#.itElement">itElement</a></li><li data-type='method'><a href="module-_it.html#.itFull">itFull</a></li><li data-type='method'><a href="module-_it.html#.itMatrix">itMatrix</a></li><li data-type='method'><a href="module-_it.html#.itObject">itObject</a></li><li data-type='method'><a href="module-_it.html#.itRepeat">itRepeat</a></li><li data-type='method'><a href="module-_it.html#.itRow">itRow</a></li><li data-type='method'><a href="module-_it.html#.itTree">itTree</a></li><li data-type='method'><a href="module-_it.html#.itUi">itUi</a></li><li data-type='method'><a href="module-_it.html#.itValue">itValue</a></li></ul></li><li><a href="module-_parser.html">_parser</a><ul class='methods'><li data-type='method'><a href="module-_parser.html#.aiExprAction">aiExprAction</a></li><li data-type='method'><a href="module-_parser.html#.aiExprAjax">aiExprAjax</a></li><li data-type='method'><a href="module-_parser.html#.aiExprButton">aiExprButton</a></li><li data-type='method'><a href="module-_parser.html#.aiExprButtons">aiExprButtons</a></li><li data-type='method'><a href="module-_parser.html#.aiExprColumn">aiExprColumn</a></li><li data-type='method'><a href="module-_parser.html#.aiExprCommand">aiExprCommand</a></li><li data-type='method'><a href="module-_parser.html#.aiExprCommands">aiExprCommands</a></li><li data-type='method'><a href="module-_parser.html#.aiExprDrawer">aiExprDrawer</a></li><li data-type='method'><a href="module-_parser.html#.aiExprField">aiExprField</a></li><li data-type='method'><a href="module-_parser.html#.aiExprFieldEx">aiExprFieldEx</a></li><li data-type='method'><a href="module-_parser.html#.aiExprFilter">aiExprFilter</a></li><li data-type='method'><a href="module-_parser.html#.aiExprIcon">aiExprIcon</a></li><li data-type='method'><a href="module-_parser.html#.aiExprOp">aiExprOp</a></li><li data-type='method'><a href="module-_parser.html#.aiExprOption">aiExprOption</a></li><li data-type='method'><a href="module-_parser.html#.aiExprPopover">aiExprPopover</a></li><li data-type='method'><a href="module-_parser.html#.aiExprTabs">aiExprTabs</a></li><li data-type='method'><a href="module-_parser.html#.aiExprTitle">aiExprTitle</a></li><li data-type='method'><a href="module-_parser.html#.aiExprWindow">aiExprWindow</a></li><li data-type='method'><a href="module-_parser.html#.applyArray">applyArray</a></li><li data-type='method'><a href="module-_parser.html#.applyColumn">applyColumn</a></li><li data-type='method'><a href="module-_parser.html#.applyConnect">applyConnect</a></li><li data-type='method'><a href="module-_parser.html#.applyItem">applyItem</a></li><li data-type='method'><a href="module-_parser.html#.applyKey">applyKey</a></li><li data-type='method'><a href="module-_parser.html#.applyKv">applyKv</a></li><li data-type='method'><a href="module-_parser.html#.applyLoading">applyLoading</a></li><li data-type='method'><a href="module-_parser.html#.applyRules">applyRules</a></li><li data-type='method'><a href="module-_parser.html#.applyStyle">applyStyle</a></li><li data-type='method'><a href="module-_parser.html#.applyValue">applyValue</a></li><li data-type='method'><a href="module-_parser.html#.parseAjax">parseAjax</a></li><li data-type='method'><a href="module-_parser.html#.parseField">parseField</a></li><li data-type='method'><a href="module-_parser.html#.parseInput">parseInput</a></li><li data-type='method'><a href="module-_parser.html#.parseQuery">parseQuery</a></li><li data-type='method'><a href="module-_parser.html#.parseValue">parseValue</a></li></ul></li><li><a href="module-_plugin.html">_plugin</a><ul class='methods'><li data-type='method'><a href="module-_plugin.html#.pluginEdition">pluginEdition</a></li><li data-type='method'><a href="module-_plugin.html#.pluginField">pluginField</a></li><li data-type='method'><a href="module-_plugin.html#.pluginForm">pluginForm</a></li><li data-type='method'><a href="module-_plugin.html#.pluginMetadata">pluginMetadata</a></li><li data-type='method'><a href="module-_plugin.html#.pluginOp">pluginOp</a></li><li data-type='method'><a href="module-_plugin.html#.pluginSelection">pluginSelection</a></li></ul></li><li><a href="module-_primary.html">_primary</a><ul class='members'><li data-type='member'><a href="module-_primary.html#.fn">fn</a></li></ul><ul class='methods'><li data-type='method'><a href="module-_primary.html#.assign">assign</a></li><li data-type='method'><a href="module-_primary.html#.clone">clone</a></li><li data-type='method'><a href="module-_primary.html#.element">element</a></li><li data-type='method'><a href="module-_primary.html#.immutable">immutable</a></li><li data-type='method'><a href="module-_primary.html#.initial">initial</a></li><li data-type='method'><a href="module-_primary.html#.parallel">parallel</a></li><li data-type='method'><a href="module-_primary.html#.pass">pass</a></li><li data-type='method'><a href="module-_primary.html#.passion">passion</a></li><li data-type='method'><a href="module-_primary.html#.pipe">pipe</a></li><li data-type='method'><a href="module-_primary.html#.prevent">prevent</a></li><li data-type='method'><a href="module-_primary.html#.promise">promise</a></li><li data-type='method'><a href="module-_primary.html#.ready">ready</a></li><li data-type='method'><a href="module-_primary.html#.signature">signature</a></li><li data-type='method'><a href="module-_primary.html#.token">token</a></li></ul></li><li><a href="module-_qr.html">_qr</a><ul class='methods'><li data-type='method'><a href="module-_qr.html#.qrClear">qrClear</a></li><li data-type='method'><a href="module-_qr.html#.qrCombine">qrCombine</a></li><li data-type='method'><a href="module-_qr.html#.qrCommon">qrCommon</a></li><li data-type='method'><a href="module-_qr.html#.qrComplex">qrComplex</a></li><li data-type='method'><a href="module-_qr.html#.qrForm">qrForm</a></li><li data-type='method'><a href="module-_qr.html#.qrInherit">qrInherit</a></li><li data-type='method'><a href="module-_qr.html#.qrInput">qrInput</a></li><li data-type='method'><a href="module-_qr.html#.qrTerms">qrTerms</a></li></ul></li><li><a href="module-_romantic.html">_romantic</a><ul class='methods'><li data-type='method'><a href="module-_romantic.html#.sexBatch">sexBatch</a></li><li data-type='method'><a href="module-_romantic.html#.sexCab">sexCab</a></li><li data-type='method'><a href="module-_romantic.html#.sexDialog">sexDialog</a></li><li data-type='method'><a href="module-_romantic.html#.sexIdentifier">sexIdentifier</a></li><li data-type='method'><a href="module-_romantic.html#.sexMessage">sexMessage</a></li><li data-type='method'><a href="module-_romantic.html#.sexModal">sexModal</a></li><li data-type='method'><a href="module-_romantic.html#.sexOp">sexOp</a></li><li data-type='method'><a href="module-_romantic.html#.sexTable">sexTable</a></li></ul></li><li><a href="module-_smart.html">_smart</a><ul class='methods'><li data-type='method'><a href="module-_smart.html#.smartForm">smartForm</a></li><li data-type='method'><a href="module-_smart.html#.smartList">smartList</a></li></ul></li><li><a href="module-_to.html">_to</a><ul class='methods'><li data-type='method'><a href="module-_to.html#.toArray">toArray</a></li><li data-type='method'><a href="module-_to.html#.toAssist">toAssist</a></li><li data-type='method'><a href="module-_to.html#.toCss">toCss</a></li><li data-type='method'><a href="module-_to.html#.toFileSize">toFileSize</a></li><li data-type='method'><a href="module-_to.html#.toForm">toForm</a></li><li data-type='method'><a href="module-_to.html#.toGrid">toGrid</a></li><li data-type='method'><a href="module-_to.html#.toGridSpan">toGridSpan</a></li><li data-type='method'><a href="module-_to.html#.toHeight">toHeight</a></li><li data-type='method'><a href="module-_to.html#.toHeightState">toHeightState</a></li><li data-type='method'><a href="module-_to.html#.toJson">toJson</a></li><li data-type='method'><a href="module-_to.html#.toKey">toKey</a></li><li data-type='method'><a href="module-_to.html#.toLimit">toLimit</a></li><li data-type='method'><a href="module-_to.html#.toLink">toLink</a></li><li data-type='method'><a href="module-_to.html#.toLoading">toLoading</a></li><li data-type='method'><a href="module-_to.html#.toLogout">toLogout</a></li><li data-type='method'><a href="module-_to.html#.toMessage">toMessage</a></li><li data-type='method'><a href="module-_to.html#.toOriginal">toOriginal</a></li><li data-type='method'><a href="module-_to.html#.toPagination">toPagination</a></li><li data-type='method'><a href="module-_to.html#.toPassword">toPassword</a></li><li data-type='method'><a href="module-_to.html#.toPid">toPid</a></li><li data-type='method'><a href="module-_to.html#.toProtocol">toProtocol</a></li><li data-type='method'><a href="module-_to.html#.toQuery">toQuery</a></li><li data-type='method'><a href="module-_to.html#.toRoute">toRoute</a></li><li data-type='method'><a href="module-_to.html#.toTime">toTime</a></li><li data-type='method'><a href="module-_to.html#.toTree">toTree</a></li><li data-type='method'><a href="module-_to.html#.toTreeArray">toTreeArray</a></li><li data-type='method'><a href="module-_to.html#.toTreeConfig">toTreeConfig</a></li><li data-type='method'><a href="module-_to.html#.toUrl">toUrl</a></li><li data-type='method'><a href="module-_to.html#.toWidth">toWidth</a></li><li data-type='method'><a href="module-_to.html#.toX">toX</a></li></ul></li><li><a href="module-_ui.html">_ui</a><ul class='methods'><li data-type='method'><a href="module-_ui.html#.activeColumn">activeColumn</a></li><li data-type='method'><a href="module-_ui.html#.activeSearch">activeSearch</a></li><li data-type='method'><a href="module-_ui.html#.activeTreeOff">activeTreeOff</a></li><li data-type='method'><a href="module-_ui.html#.activeTreeOn">activeTreeOn</a></li><li data-type='method'><a href="module-_ui.html#.anchorColumn">anchorColumn</a></li><li data-type='method'><a href="module-_ui.html#.anchorSearch">anchorSearch</a></li><li data-type='method'><a href="module-_ui.html#.anchorTree">anchorTree</a></li><li data-type='method'><a href="module-_ui.html#.columnWrapper">columnWrapper</a></li><li data-type='method'><a href="module-_ui.html#.formClear">formClear</a></li><li data-type='method'><a href="module-_ui.html#.formGet">formGet</a></li><li data-type='method'><a href="module-_ui.html#.formHit">formHit</a></li><li data-type='method'><a href="module-_ui.html#.formHits">formHits</a></li><li data-type='method'><a href="module-_ui.html#.formLinker">formLinker</a></li><li data-type='method'><a href="module-_ui.html#.formRead">formRead</a></li><li data-type='method'><a href="module-_ui.html#.formReset">formReset</a></li><li data-type='method'><a href="module-_ui.html#.formSubmit">formSubmit</a></li><li data-type='method'><a href="module-_ui.html#.htmlDisabled">htmlDisabled</a></li><li data-type='method'><a href="module-_ui.html#.htmlErrorBlur">htmlErrorBlur</a></li><li data-type='method'><a href="module-_ui.html#.htmlErrorFocus">htmlErrorFocus</a></li><li data-type='method'><a href="module-_ui.html#.htmlReadOnly">htmlReadOnly</a></li><li data-type='method'><a href="module-_ui.html#.onConfirm">onConfirm</a></li><li data-type='method'><a href="module-_ui.html#.onDatum">onDatum</a></li><li data-type='method'><a href="module-_ui.html#.onLinker">onLinker</a></li><li data-type='method'><a href="module-_ui.html#.onReference">onReference</a></li><li data-type='method'><a href="module-_ui.html#.onSave">onSave</a></li><li data-type='method'><a href="module-_ui.html#.onUniform">onUniform</a></li><li data-type='method'><a href="module-_ui.html#.writeDisabled">writeDisabled</a></li><li data-type='method'><a href="module-_ui.html#.writeImpact">writeImpact</a></li><li data-type='method'><a href="module-_ui.html#.writeInitial">writeInitial</a></li><li data-type='method'><a href="module-_ui.html#.writeLinker">writeLinker</a></li><li data-type='method'><a href="module-_ui.html#.writeReadOnly">writeReadOnly</a></li><li data-type='method'><a href="module-_ui.html#.writeSegment">writeSegment</a></li></ul></li><li><a href="module-_unity.html">_unity</a><ul class='methods'><li data-type='method'><a href="module-_unity.html#.ambArray">ambArray</a></li><li data-type='method'><a href="module-_unity.html#.ambEvent">ambEvent</a></li><li data-type='method'><a href="module-_unity.html#.ambFind">ambFind</a></li><li data-type='method'><a href="module-_unity.html#.ambKv">ambKv</a></li><li data-type='method'><a href="module-_unity.html#.ambObject">ambObject</a></li><li data-type='method'><a href="module-_unity.html#.ambValue">ambValue</a></li><li data-type='method'><a href="module-_unity.html#.connectId">connectId</a></li><li data-type='method'><a href="module-_unity.html#.connectItem">connectItem</a></li><li data-type='method'><a href="module-_unity.html#.connectRenders">connectRenders</a></li><li data-type='method'><a href="module-_unity.html#.connectValidator">connectValidator</a></li><li data-type='method'><a href="module-_unity.html#.decryptBase64">decryptBase64</a></li><li data-type='method'><a href="module-_unity.html#.dslArray">dslArray</a></li><li data-type='method'><a href="module-_unity.html#.encryptAES">encryptAES</a></li><li data-type='method'><a href="module-_unity.html#.encryptBase64">encryptBase64</a></li><li data-type='method'><a href="module-_unity.html#.encryptHmac512">encryptHmac512</a></li><li data-type='method'><a href="module-_unity.html#.encryptMD5">encryptMD5</a></li><li data-type='method'><a href="module-_unity.html#.forest">forest</a></li><li data-type='method'><a href="module-_unity.html#.forestGroup">forestGroup</a></li><li data-type='method'><a href="module-_unity.html#.formatCurrency">formatCurrency</a></li><li data-type='method'><a href="module-_unity.html#.formatDate">formatDate</a></li><li data-type='method'><a href="module-_unity.html#.formatExpr">formatExpr</a></li><li data-type='method'><a href="module-_unity.html#.formatNow">formatNow</a></li><li data-type='method'><a href="module-_unity.html#.formatObject">formatObject</a></li><li data-type='method'><a href="module-_unity.html#.formatPercent">formatPercent</a></li><li data-type='method'><a href="module-_unity.html#.formatQuery">formatQuery</a></li><li data-type='method'><a href="module-_unity.html#.formatTpl">formatTpl</a></li><li data-type='method'><a href="module-_unity.html#.mathDiscount">mathDiscount</a></li><li data-type='method'><a href="module-_unity.html#.mathDivision">mathDivision</a></li><li data-type='method'><a href="module-_unity.html#.mathMultiplication">mathMultiplication</a></li><li data-type='method'><a href="module-_unity.html#.mathSubtract">mathSubtract</a></li><li data-type='method'><a href="module-_unity.html#.mathSum">mathSum</a></li><li data-type='method'><a href="module-_unity.html#.randomArray">randomArray</a></li><li data-type='method'><a href="module-_unity.html#.randomInteger">randomInteger</a></li><li data-type='method'><a href="module-_unity.html#.randomString">randomString</a></li><li data-type='method'><a href="module-_unity.html#.randomUUID">randomUUID</a></li><li data-type='method'><a href="module-_unity.html#.sorterAsc">sorterAsc</a></li><li data-type='method'><a href="module-_unity.html#.sorterAscD">sorterAscD</a></li><li data-type='method'><a href="module-_unity.html#.sorterAscDFn">sorterAscDFn</a></li><li data-type='method'><a href="module-_unity.html#.sorterAscFn">sorterAscFn</a></li><li data-type='method'><a href="module-_unity.html#.sorterAscT">sorterAscT</a></li><li data-type='method'><a href="module-_unity.html#.sorterAscTFn">sorterAscTFn</a></li><li data-type='method'><a href="module-_unity.html#.sorterDesc">sorterDesc</a></li><li data-type='method'><a href="module-_unity.html#.sorterDescD">sorterDescD</a></li><li data-type='method'><a href="module-_unity.html#.sorterDescDFn">sorterDescDFn</a></li><li data-type='method'><a href="module-_unity.html#.sorterDescFn">sorterDescFn</a></li><li data-type='method'><a href="module-_unity.html#.sorterDescT">sorterDescT</a></li><li data-type='method'><a href="module-_unity.html#.sorterDescTFn">sorterDescTFn</a></li><li data-type='method'><a href="module-_unity.html#.sorterObject">sorterObject</a></li><li data-type='method'><a href="module-_unity.html#.tree">tree</a></li><li data-type='method'><a href="module-_unity.html#.treeChildren">treeChildren</a></li><li data-type='method'><a href="module-_unity.html#.treeChildrenAll">treeChildrenAll</a></li><li data-type='method'><a href="module-_unity.html#.treeChildrenAllIn">treeChildrenAllIn</a></li><li data-type='method'><a href="module-_unity.html#.treeFlip">treeFlip</a></li><li data-type='method'><a href="module-_unity.html#.treeParent">treeParent</a></li><li data-type='method'><a href="module-_unity.html#.treeParentAll">treeParentAll</a></li><li data-type='method'><a href="module-_unity.html#.treeParentAllIn">treeParentAllIn</a></li><li data-type='method'><a href="module-_unity.html#.treeShared">treeShared</a></li></ul></li><li><a href="module-_value.html">_value</a><ul class='methods'><li data-type='method'><a href="module-_value.html#.valueAppend">valueAppend</a></li><li data-type='method'><a href="module-_value.html#.valueArray">valueArray</a></li><li data-type='method'><a href="module-_value.html#.valueCopy">valueCopy</a></li><li data-type='method'><a href="module-_value.html#.valueDuration">valueDuration</a></li><li data-type='method'><a href="module-_value.html#.valueEndTime">valueEndTime</a></li><li data-type='method'><a href="module-_value.html#.valueExpr">valueExpr</a></li><li data-type='method'><a href="module-_value.html#.valueFabric">valueFabric</a></li><li data-type='method'><a href="module-_value.html#.valueFabrics">valueFabrics</a></li><li data-type='method'><a href="module-_value.html#.valueFactor">valueFactor</a></li><li data-type='method'><a href="module-_value.html#.valueFind">valueFind</a></li><li data-type='method'><a href="module-_value.html#.valueFloat">valueFloat</a></li><li data-type='method'><a href="module-_value.html#.valueInt">valueInt</a></li><li data-type='method'><a href="module-_value.html#.valueLadder">valueLadder</a></li><li data-type='method'><a href="module-_value.html#.valueLimit">valueLimit</a></li><li data-type='method'><a href="module-_value.html#.valueLink">valueLink</a></li><li data-type='method'><a href="module-_value.html#.valueNow">valueNow</a></li><li data-type='method'><a href="module-_value.html#.valueOk">valueOk</a></li><li data-type='method'><a href="module-_value.html#.valueOnChange">valueOnChange</a></li><li data-type='method'><a href="module-_value.html#.valuePair">valuePair</a></li><li data-type='method'><a href="module-_value.html#.valueParse">valueParse</a></li><li data-type='method'><a href="module-_value.html#.valuePath">valuePath</a></li><li data-type='method'><a href="module-_value.html#.valuePinyin">valuePinyin</a></li><li data-type='method'><a href="module-_value.html#.valueRequest">valueRequest</a></li><li data-type='method'><a href="module-_value.html#.valueStartTime">valueStartTime</a></li><li data-type='method'><a href="module-_value.html#.valueTime">valueTime</a></li><li data-type='method'><a href="module-_value.html#.valueTimes">valueTimes</a></li><li data-type='method'><a href="module-_value.html#.valueValid">valueValid</a></li></ul></li><li><a href="module-_xweb.html">_xweb</a><ul class='methods'><li data-type='method'><a href="module-_xweb.html#.xtChecked">xtChecked</a></li><li data-type='method'><a href="module-_xweb.html#.xtExprFlat">xtExprFlat</a></li><li data-type='method'><a href="module-_xweb.html#.xtFormat">xtFormat</a></li><li data-type='method'><a href="module-_xweb.html#.xtGet">xtGet</a></li><li data-type='method'><a href="module-_xweb.html#.xtInitArray">xtInitArray</a></li><li data-type='method'><a href="module-_xweb.html#.xtInitArrayMap">xtInitArrayMap</a></li><li data-type='method'><a href="module-_xweb.html#.xtInitFormat">xtInitFormat</a></li><li data-type='method'><a href="module-_xweb.html#.xtInitObject">xtInitObject</a></li><li data-type='method'><a href="module-_xweb.html#.xtLazyAjax">xtLazyAjax</a></li><li data-type='method'><a href="module-_xweb.html#.xtLazyInit">xtLazyInit</a></li><li data-type='method'><a href="module-_xweb.html#.xtLazyUp">xtLazyUp</a></li><li data-type='method'><a href="module-_xweb.html#.xtReady">xtReady</a></li><li data-type='method'><a href="module-_xweb.html#.xtRender">xtRender</a></li><li data-type='method'><a href="module-_xweb.html#.xtReset">xtReset</a></li><li data-type='method'><a href="module-_xweb.html#.xtRevert">xtRevert</a></li><li data-type='method'><a href="module-_xweb.html#.xtRowAdd">xtRowAdd</a></li><li data-type='method'><a href="module-_xweb.html#.xtRowChange">xtRowChange</a></li><li data-type='method'><a href="module-_xweb.html#.xtRowDel">xtRowDel</a></li><li data-type='method'><a href="module-_xweb.html#.xtSet">xtSet</a></li><li data-type='method'><a href="module-_xweb.html#.xtUnsafe">xtUnsafe</a></li><li data-type='method'><a href="module-_xweb.html#.xtUploadHandler">xtUploadHandler</a></li></ul></li><li><a href="module-web-ai.html">web-ai</a><ul class='methods'><li data-type='method'><a href="module-web-ai.html#.aiBreadcrumb">aiBreadcrumb</a></li><li data-type='method'><a href="module-web-ai.html#.aiLink">aiLink</a></li><li data-type='method'><a href="module-web-ai.html#.aiUrl">aiUrl</a></li></ul></li><li><a href="module-web-component.html">web-component</a><ul class='methods'><li data-type='method'><a href="module-web-component.html#.*Dialog">* Dialog</a></li><li data-type='method'><a href="module-web-component.html#.*DialogButton">* DialogButton</a></li><li data-type='method'><a href="module-web-component.html#.*DialogMenu">* DialogMenu</a></li><li data-type='method'><a href="module-web-component.html#.*PageCard">* PageCard</a></li><li data-type='method'><a href="module-web-component.html#.*Rectangle">* Rectangle</a></li><li data-type='method'><a href="module-web-component.html#.ColumnUser">ColumnUser</a></li><li data-type='method'><a href="module-web-component.html#.G6Editor">G6Editor</a></li><li data-type='method'><a href="module-web-component.html#.G6Viewer">G6Viewer</a></li><li data-type='method'><a href="module-web-component.html#.Graphic2">Graphic2</a></li><li data-type='method'><a href="module-web-component.html#.LoadingAlert">LoadingAlert</a></li><li data-type='method'><a href="module-web-component.html#.LoadingContent">LoadingContent</a></li><li data-type='method'><a href="module-web-component.html#.Navigation">Navigation</a></li><li data-type='method'><a href="module-web-component.html#.NavSwallow">NavSwallow</a></li></ul></li><li><a href="module-web-input.html">web-input</a><ul class='methods'><li data-type='method'><a href="module-web-input.html#.AddressSelector">AddressSelector</a></li><li data-type='method'><a href="module-web-input.html#.BraftEditor">BraftEditor</a></li><li data-type='method'><a href="module-web-input.html#.CheckJson">CheckJson</a></li><li data-type='method'><a href="module-web-input.html#.CheckTransfer">CheckTransfer</a></li><li data-type='method'><a href="module-web-input.html#.DialogEditor">DialogEditor</a></li><li data-type='method'><a href="module-web-input.html#.FileBatch">FileBatch</a></li><li data-type='method'><a href="module-web-input.html#.FileUpload">FileUpload</a></li><li data-type='method'><a href="module-web-input.html#.FileUpload">FileUpload</a></li><li data-type='method'><a href="module-web-input.html#.InputArray">InputArray</a></li><li data-type='method'><a href="module-web-input.html#.JsonEditor">JsonEditor</a></li><li data-type='method'><a href="module-web-input.html#.ListSelector">ListSelector</a></li><li data-type='method'><a href="module-web-input.html#.MagicView">MagicView</a></li><li data-type='method'><a href="module-web-input.html#.MatrixSelector">MatrixSelector</a></li><li data-type='method'><a href="module-web-input.html#.SearchInput">SearchInput</a></li><li data-type='method'><a href="module-web-input.html#.SearchRangeDate">SearchRangeDate</a></li><li data-type='method'><a href="module-web-input.html#.TableEditor">TableEditor</a></li><li data-type='method'><a href="module-web-input.html#.TreeSelector">TreeSelector</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#@zero">@zero</a></li><li><a href="global.html#assistOut">assistOut</a></li></ul>
</nav>

<div id="main">
    
    <h1 class="page-title">_primary</h1>
    

    




<section>

<header>
    
        
            
        
    
</header>

<article>
    
        <div class="container-overview">
        
            
                <div class="description usertext"><h1>原子模块</h1>
<p>底层原子类操作，该操作通常不带有任何业务信息，为底层的基础操作，模块内的API不带任何函数前缀，仅为通用函数，此处先列举所有API的相关说明：</p>
<table>
<thead>
<tr>
<th style="text-align:left">函数名</th>
<th style="text-align:left">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">assign</td>
<td style="text-align:left">Object.assign则增强版，支持三种模式：常用模式、覆盖模式、追加模式，内置对象执行递归嵌套。</td>
</tr>
<tr>
<td style="text-align:left">clone</td>
<td style="text-align:left">深度拷贝对象，不同模式对象实现不同的拷贝，拷贝对象最终使用<code>===</code>方式会检测为false。</td>
</tr>
<tr>
<td style="text-align:left">debug</td>
<td style="text-align:left">「开发」调试专用函数。</td>
</tr>
<tr>
<td style="text-align:left">element</td>
<td style="text-align:left">读取对应id的HTML元素，等价<code>document.getElementById</code>。</td>
</tr>
<tr>
<td style="text-align:left">fn</td>
<td style="text-align:left">「综合」上层函数调用专用方法。</td>
</tr>
<tr>
<td style="text-align:left">immutable</td>
<td style="text-align:left">标准函数，用于构造Immutable中的List/Map对象，调用高层API专用。</td>
</tr>
<tr>
<td style="text-align:left">initial</td>
<td style="text-align:left">「引擎」不同表单模式中计算初始值的专用函数。</td>
</tr>
<tr>
<td style="text-align:left">parallel</td>
<td style="text-align:left">并行Promise专用函数。</td>
</tr>
<tr>
<td style="text-align:left">passion</td>
<td style="text-align:left">串行Promise专用函数。</td>
</tr>
<tr>
<td style="text-align:left">pipe</td>
<td style="text-align:left">「引擎」尾部函数，执行<code>setState</code>的最终方法。</td>
</tr>
<tr>
<td style="text-align:left">prevent</td>
<td style="text-align:left">调用<code>event.preventDefault()</code>的专用函数，针对<code>&lt;a/&gt;</code>特别有效。</td>
</tr>
<tr>
<td style="text-align:left">promise</td>
<td style="text-align:left">构造异步Promise的专用过程。</td>
</tr>
<tr>
<td style="text-align:left">ready</td>
<td style="text-align:left">「引擎」设置$ready的值为true，返回Promise。</td>
</tr>
<tr>
<td style="text-align:left">sequence</td>
<td style="text-align:left">序号生成专用函数，支持大写字母、小写字母、数字三种模式。</td>
</tr>
<tr>
<td style="text-align:left">signature</td>
<td style="text-align:left">「安全」数字签名专用函数。</td>
</tr>
<tr>
<td style="text-align:left">slice</td>
<td style="text-align:left">切片函数，针对Object/Array实现切片，生成子元素。</td>
</tr>
<tr>
<td style="text-align:left">token</td>
<td style="text-align:left">「安全」读取当前用户的token信息。</td>
</tr>
</tbody>
</table></div>
            

            
                




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>
































            
        
        </div>
    

    

    

    
    
    

     

    

    
        <h3 class="subsection-title">Members</h3>

        
            
<h4 class="name" id=".fn"><span class="type-signature">(static) </span>fn<span class="type-signature"></span></h4>





<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「标准」<code>Ux.fn</code></h2>
<p>Ux.fn(reference).xxx 方式调用函数，使用reference 构造对应的函数信息，需要注意的是：
除了<code>onChange/onSelect</code>以外，其他所有函数都是以<code>rx</code>开始，<code>rx</code>在Zero Ui中的全称是：<code>Reactive X</code>，最初设计这种函数名的目的是区分
不同的函数前缀，其中包括：</p>
<table>
<thead>
<tr>
<th style="text-align:right">前缀</th>
<th style="text-align:left">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">on</td>
<td style="text-align:left">HTML和Ant Design原生事件函数。</td>
</tr>
<tr>
<td style="text-align:right">rx</td>
<td style="text-align:left">自定义函数，Reactive X定义，Zero Ui专用函数。</td>
</tr>
<tr>
<td style="text-align:right">fn</td>
<td style="text-align:left">自定义纯函数，JavaScript Function对应的定义。</td>
</tr>
<tr>
<td style="text-align:right">ix</td>
<td style="text-align:left">「保留」内置专用函数，Internal X定义，Zero Ui保留的专用函数。</td>
</tr>
</tbody>
</table>
<h3>1. 函数检索规则</h3>
<ol>
<li>先从reference的state中读取对应函数，状态中的函数优先，和数据相反，状态中的函数有可能是在<code>componentDidMount</code>中定义的。</li>
<li>再从reference的props中读取函数。</li>
<li>如果都无法读取时则报错，该函数最终会返回函数引用。</li>
</ol>
<h3>2. 函数支持表</h3>
<table>
<thead>
<tr>
<th style="text-align:right">函数名</th>
<th style="text-align:left">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">onChange</td>
<td style="text-align:left">原生HTML（包括AntD）常用的onChange方法。</td>
</tr>
<tr>
<td style="text-align:right">onSelect</td>
<td style="text-align:left">原生HTML（包括AntD）常用的onSelect方法。</td>
</tr>
<tr>
<td style="text-align:right">rxSource</td>
<td style="text-align:left">读取数据源的专用方法，组件中特定数据源的读取。</td>
</tr>
<tr>
<td style="text-align:right">rxSubmit</td>
<td style="text-align:left">提交函数。</td>
</tr>
<tr>
<td style="text-align:right">rxClose</td>
<td style="text-align:left">关闭函数。</td>
</tr>
<tr>
<td style="text-align:right">rxFilter</td>
<td style="text-align:left">过滤函数。</td>
</tr>
<tr>
<td style="text-align:right">rxSelect</td>
<td style="text-align:left">选择函数。</td>
</tr>
<tr>
<td style="text-align:right">rxTree</td>
<td style="text-align:left">树操作函数。</td>
</tr>
<tr>
<td style="text-align:right">rxChild</td>
<td style="text-align:left">绑定子组件专用函数。</td>
</tr>
<tr>
<td style="text-align:right">rxCheck</td>
<td style="text-align:left">选择函数，Checkbox专用。</td>
</tr>
<tr>
<td style="text-align:right">rxClean</td>
<td style="text-align:left">清除函数，清除选中状态专用。</td>
</tr>
<tr>
<td style="text-align:right">rxDropOver</td>
<td style="text-align:left">拖拽时触发的悬停覆盖函数。</td>
</tr>
<tr>
<td style="text-align:right">rxBack</td>
<td style="text-align:left">返回函数。</td>
</tr>
<tr>
<td style="text-align:right">rxJumpPage</td>
<td style="text-align:left">跳页函数。</td>
</tr>
<tr>
<td style="text-align:right">rxNext</td>
<td style="text-align:left">下一步函数。</td>
</tr>
<tr>
<td style="text-align:right">rxNextPage</td>
<td style="text-align:left">下一页函数。</td>
</tr>
<tr>
<td style="text-align:right">rxPrev</td>
<td style="text-align:left">上一步函数。</td>
</tr>
<tr>
<td style="text-align:right">rxPrevPage</td>
<td style="text-align:left">上一页函数。</td>
</tr>
<tr>
<td style="text-align:right">rxFirst</td>
<td style="text-align:left">第一步函数。</td>
</tr>
<tr>
<td style="text-align:right">rxFirstPage</td>
<td style="text-align:left">第一页函数。</td>
</tr>
<tr>
<td style="text-align:right">rxLast</td>
<td style="text-align:left">最后一步函数。</td>
</tr>
<tr>
<td style="text-align:right">rxLastPage</td>
<td style="text-align:left">最后一页函数。</td>
</tr>
<tr>
<td style="text-align:right">rxAdd</td>
<td style="text-align:left">添加函数。</td>
</tr>
<tr>
<td style="text-align:right">rxEdit</td>
<td style="text-align:left">编辑函数。</td>
</tr>
<tr>
<td style="text-align:right">rxDelete</td>
<td style="text-align:left">删除函数。</td>
</tr>
<tr>
<td style="text-align:right">rxRefresh</td>
<td style="text-align:left">更新函数。</td>
</tr>
<tr>
<td style="text-align:right">rxItemAdd</td>
<td style="text-align:left">子项添加函数。</td>
</tr>
<tr>
<td style="text-align:right">rxItemEdit</td>
<td style="text-align:left">子项编辑函数。</td>
</tr>
<tr>
<td style="text-align:right">rxItemDelete</td>
<td style="text-align:left">子项删除函数。</td>
</tr>
</tbody>
</table>
<h3>3. 编辑器函数支持表</h3>
<table>
<thead>
<tr>
<th style="text-align:right">函数名</th>
<th style="text-align:left">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">rxRowAdd</td>
<td style="text-align:left">行添加函数。</td>
</tr>
<tr>
<td style="text-align:right">rxRowDel</td>
<td style="text-align:left">行删除函数。</td>
</tr>
<tr>
<td style="text-align:right">rxRowFill</td>
<td style="text-align:left">行扩展函数。</td>
</tr>
<tr>
<td style="text-align:right">rxRowCompress</td>
<td style="text-align:left">行压缩函数。</td>
</tr>
<tr>
<td style="text-align:right">rxRowWrap</td>
<td style="text-align:left">行交换函数。</td>
</tr>
<tr>
<td style="text-align:right">rxRowConfig</td>
<td style="text-align:left">行配置函数，写入顶层raft。</td>
</tr>
<tr>
<td style="text-align:right">rxCellAdd</td>
<td style="text-align:left">单元格添加函数。</td>
</tr>
<tr>
<td style="text-align:right">rxCellMerge</td>
<td style="text-align:left">单元格合并函数。</td>
</tr>
<tr>
<td style="text-align:right">rxCellDel</td>
<td style="text-align:left">单元格删除函数。</td>
</tr>
<tr>
<td style="text-align:right">rxCellSplit</td>
<td style="text-align:left">单元格拆分函数。</td>
</tr>
<tr>
<td style="text-align:right">rxCellFill</td>
<td style="text-align:left">单元格填充函数。</td>
</tr>
<tr>
<td style="text-align:right">rxCellWrap</td>
<td style="text-align:left">单元格交换函数。</td>
</tr>
<tr>
<td style="text-align:right">rxCellConfig</td>
<td style="text-align:left">单元格配置函数。</td>
</tr>
<tr>
<td style="text-align:right">rxCellRefresh</td>
<td style="text-align:left">单元格刷新函数。</td>
</tr>
</tbody>
</table>
<blockquote>
<p><code>rx</code>系列函数是Zero Ui中的最终标准！！！</p>
</blockquote>
</div>








        
    

    
        <h3 class="subsection-title">Methods</h3>

        
            

    

    <h4 class="name" id=".assign"><span class="type-signature">(static) </span>assign<span class="signature">(target, source, mode)</span><span class="type-signature"> &rarr; {Object}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「标准」<code>Ux.assign</code></h2>
<p>三种模式的拷贝函数，增强原始的<code>Object.assign</code>函数。</p>
<ul>
<li>mode = 0 ：直接覆盖，内部调用<code>Object.assign</code>方法。</li>
<li>mode = 1 ：深度覆盖，不直接覆盖子对象，递归往下，发现同键数据后直接覆盖数据。</li>
<li>mode = 2 ：深度追加，不直接覆盖子对象，递归往下，同键不存在则追加，出现重复建则直接跳过。</li>
</ul>
<pre class="prettyprint source lang-js"><code>// mode = 0（默认模式）
const target = {
    name: &quot;mode&quot;
};
const source = {
    email: &quot;lang.yu@hpe.com&quot;
};

// 等价于 Object.assign(target,source);
const combine = Ux.assign(target,source);

// mode = 1 和 mode = 2 的模式则参考实际使用。
</code></pre>
<blockquote>
<p>实际上mode为1或2的场景在很多实战场景中有所使用，这两种模式不会直接覆盖子对象（包括嵌套对象），而是通过比对的方式执行<strong>覆盖</strong>和<strong>追加</strong>（同名跳过）操作，实现深度合并。</p>
</blockquote>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        
        <th>Default</th>
        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>target</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            

            
                <td class="default">
                
                </td>
            

            <td class="description last"><p>拷贝目标（副作用修改）</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>source</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            

            
                <td class="default">
                
                </td>
            

            <td class="description last"><p>拷贝源</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>mode</code></td>
            

            <td class="type">
            
                
<span class="param-type">Number</span>


            
            </td>

            

            
                <td class="default">
                
                    <code>0</code>
                
                </td>
            

            <td class="description last"><p>模式参数，用于不同的模式：0 = 默认，1 = 深度覆盖，2 = 深度追加</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>合并好的JavaScript对象Object</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Object</span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".clone"><span class="type-signature">(static) </span>clone<span class="signature">(input)</span><span class="type-signature"> &rarr; {any}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「标准」<code>Ux.clone</code></h2>
<p>该函数是一个高频使用函数，内置使用<code>Immutable</code>的API实现对象拷贝，拷贝对象分为以下几种场景：</p>
<ol>
<li>普通JS对象：Object/Array，直接调用<code>Immutable.fromJS.toJS</code>的链式调用实现对象拷贝。</li>
<li>DataArray/DataObject：将这两种对象的内部内容拷贝出来，生成Object或Array。</li>
<li>Function：（不拷贝），直接返回原始函数，防止函数拷贝过程中的错误信息。</li>
<li>NodeList：Dom对象由于挂载在HTML元素中，所以不执行拷贝，而是直接返回该Dom引用。</li>
<li>Set：如果是集合，则创建一个新的集合，将元素依次追加到集合中。</li>
<li>Acl数组：对存在权限控制的Array/Object而言，它会包含一个索引之外的<code>__acl</code>属性，该属性存储了Acl的权限属性。
<ol>
<li>对Object类型而言，会直接拷贝__acl属性。</li>
<li>对Array类型，需要独立拷贝__acl属性（Immutable不会复制非索引访问的属性）。</li>
</ol>
</li>
</ol>
<blockquote>
<p>此处的JS应用了原型链，由于Array本身是一个Object，所以除了索引以外，可直接追加属性，只是这些属性不作为标准Array元素对待。</p>
</blockquote>
<pre class="prettyprint source lang-js"><code>// 直接拷贝对象，拷贝过后的对象的任何更改都不会反应到原始对象
const before = {
     name: &quot;Lang&quot;
};
const after = Ux.clone(before);
after.name = &quot;Lang2&quot;;
console.info(item,input);

// before 的值依旧是：{ name: &quot;Lang&quot; }
// after 的值为修改后的值 { name: &quot;Lang2&quot; };
</code></pre>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>input</code></td>
            

            <td class="type">
            
                
<span class="param-type">DataObject</span>
|

<span class="param-type">DataArray</span>
|

<span class="param-type">Object</span>
|

<span class="param-type">Array</span>


            
            </td>

            

            

            <td class="description last"><p>传入合法对象，</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回拷贝好的 Object</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">any</span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".element"><span class="type-signature">(static) </span>element<span class="signature">(id)</span><span class="type-signature"> &rarr; {HTMLElement}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h1>「标准」<code>Ux.element</code></h1>
<p>等价于 document.getElementById 读取HTML元素。</p>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>id</code></td>
            

            <td class="type">
            
                
<span class="param-type">String</span>


            
            </td>

            

            

            <td class="description last"><p>HTML元素的ID值</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        


<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">HTMLElement</span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".immutable"><span class="type-signature">(static) </span>immutable<span class="signature">(input)</span><span class="type-signature"> &rarr; {Map|List}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「标准」<code>Ux.immutable</code></h2>
<p>直接调用 <code>immutable</code> 包中的 Immutable.fromJS 函数，生成 Immutable 对象，该对象包含了很多新的API，如常用的：</p>
<ul>
<li><code>getIn</code>：可直接使用<code>getIn([&quot;field1&quot;,&quot;field11&quot;])</code>读取嵌套属性。</li>
<li><code>setIn</code>：可使用<code>setIn([&quot;field1&quot;,&quot;field11&quot;])</code>设置嵌套属性。</li>
<li><code>contains</code>：高频使用方法，特别是Array模式，当然也可以直接使用ES6中的<code>Set.has</code>来判断。</li>
</ul>
<pre class="prettyprint source"><code>const item = [&quot;key&quot;, &quot;key1&quot;];
const $item = Ux.immutable(item);

console.info($item.contains(&quot;key&quot;));
</code></pre>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>input</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>
|

<span class="param-type">Array</span>


            
            </td>

            

            

            <td class="description last"><p>输入对象，可以是任意 JavaScript 对象</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>Immutable库中需要使用的专用对象</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Map</span>
|

<span class="param-type">List</span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".initial"><span class="type-signature">(static) </span>initial<span class="signature">(reference, form, program)</span><span class="type-signature"> &rarr; {Object}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「引擎」<code>Ux.initial</code></h2>
<p>执行表单初始化逻辑，实现表单属性<code>$inited</code>的完整计算流程，不论是静态配置还是动态配置，都生效，表单初始化流程如下：</p>
<ol>
<li>添加模式中（mode = ADD）：判断form中是否包含了initial属性，如果包含了initial属性，则使用initial属性计算。
<ul>
<li>此时initial中的属性对应值支持表达式如<code>UNIQUE:xxx</code>这种，所有在表单中可支持的表达式都可执行初始化计算，计算源以reference为主。</li>
</ul>
</li>
<li>编辑模式中（mode = EDIT）：编辑模式直接将<code>$inited</code>变量的值赋值到初始化数据中。</li>
</ol>
<p>第三参数<code>program</code>主要负责提供编程模式的覆盖参数，它的优先级最高，如果出现了同名属性，直接用<code>program</code>中的函数进行覆盖。</p>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>reference</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>
|

<span class="param-type">ReactComponent</span>


            
            </td>

            

            

            <td class="description last"><p>React对应组件引用。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>form</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            

            

            <td class="description last"><p>表单配置。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>program</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            

            

            <td class="description last"><p>编程专用的配置数据传入。</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>初始化数据（表单初始化数据）。</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Object</span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".parallel"><span class="type-signature">(static) </span>parallel<span class="signature">(promises, &hellip;keys)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「标准」<code>Ux.parallel</code></h2>
<p>并行 Promise 专用函数，每个 Promise 会同时执行最终合并结果，直接构造并行运行结果</p>
<ol>
<li>如果不传第二参数，keys 长度为 0，则直接返回 <code>[x]</code> 的 promises 直接结果</li>
<li>如果传入第二参，keys 长度 &gt; 0，则会返回 <code>{}</code> 的 promises 直接结果</li>
</ol>
<h3>直接并行 []</h3>
<pre class="prettyprint source lang-js"><code>const promiseArray = [
     promise1,       // 假设返回 {name:&quot;Lang&quot;}
     promise2,       // 假设返回 [1,2]
     promise3        // 假设返回 &quot;3 Promise&quot;
];
Ux.parallel(promiseArray).then(response => {
     // response 数据结构：
     // [
     //      {name, &quot;Lang&quot;},
     //      [1,2],
     //      &quot;3 Promise&quot;
     // ]
});
</code></pre>
<h3>异构并行 {}</h3>
<pre class="prettyprint source lang-js"><code>const promiseArray = [
     promise1,       // 假设返回 {name:&quot;Lang&quot;}
     promise2,       // 假设返回 [1,2]
     promise3        // 假设返回 &quot;3 Promise&quot;
];
Ux.parallel(promiseArray, &quot;user&quot;, &quot;number&quot;).then(response => {
     // response 数据结构：
     // {
     //      &quot;user&quot;: {name, &quot;Lang&quot;},
     //      &quot;number&quot;: [1,2],
     //      &quot;2&quot;: &quot;3 Promise&quot;
     // }
});
</code></pre>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        
        <th>Attributes</th>
        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>promises</code></td>
            

            <td class="type">
            
                
<span class="param-type">Array</span>


            
            </td>

            
                <td class="attributes">
                

                

                
                </td>
            

            

            <td class="description last"><p>一个 Promise 的数组。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>keys</code></td>
            

            <td class="type">
            
                
<span class="param-type">Array.&lt;String></span>


            
            </td>

            
                <td class="attributes">
                

                

                
                    &lt;repeatable><br>
                
                </td>
            

            

            <td class="description last"><p>一个包含键的数组，用于处理最终返回值专用。</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回最终的 Promise</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".pass"><span class="type-signature">(static) </span>pass<span class="signature">(reference, field)</span><span class="type-signature"> &rarr; {Object}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「引擎」<code>Ux.pass</code></h2>
<p>根据传入的field值同时从reference中提取数据，提取结果通常是Object，然后执行合并</p>
<ol>
<li>props中的同名属性值会覆盖state中的同名属性值。</li>
<li>最终合并过程不会修改输入：
<ol>
<li>如果是props本身是只读，不能变更。</li>
<li>如果是state更改只能使用setState，不可直接变更。</li>
</ol>
</li>
</ol>
<blockquote>
<p>该函数会执行combine的合并操作，合并操作会实现对象的提取，带有子对象处理功能。</p>
</blockquote>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>reference</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>
|

<span class="param-type">ReactComponent</span>


            
            </td>

            

            

            <td class="description last"><p>React组件引用</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>field</code></td>
            

            <td class="type">
            
                
<span class="param-type">String</span>


            
            </td>

            

            

            <td class="description last"><p>提取数据的属性值</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回合并过后的对象信息</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Object</span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".passion"><span class="type-signature">(async, static) </span>passion<span class="signature">(generator, input)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「标准」<code>Ux.passion</code></h2>
<p>顺序链接 Promise 专用函数（串行Promise），最终构造成 Monad 链</p>
<pre class="prettyprint source lang-shell"><code>input -> Monad1 -> out1,
out1 ->  Monad2 -> out2,
out2 ->  Monad3 -> out3,
....

# 最终构造链式结构
Monad1 -> Monad2 -> Monad3 -> ... -> Monadn
</code></pre>
<p>执行步骤如下：</p>
<ol>
<li>数组中的每一个元素都必须是一个<strong>函数生成器</strong>（generator），每调用一次会生成这个节点的 Promise</li>
<li>使用 generator 的目的是保证每个 Promise 都是延迟生成。</li>
<li>按照流程，第一个 generator 生成了 Promise 过后，会使用 then 的方式继续往下直到最后一个执行完成。</li>
</ol>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>generator</code></td>
            

            <td class="type">
            
                
<span class="param-type">Array</span>


            
            </td>

            

            

            <td class="description last"><p>构造每一个节点的 Promise 的专用函数</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>input</code></td>
            

            <td class="type">
            
                
<span class="param-type">any</span>


            
            </td>

            

            

            <td class="description last"><p>第一个节点的 Promise 的输入参数</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回最终的 Promise 信息</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".pipe"><span class="type-signature">(async, static) </span>pipe<span class="signature">(arguments<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「引擎」<code>Ux.pipe</code></h2>
<p>输入可变长度参数相关信息，暂时支持：</p>
<ol>
<li>长度为1：必须输入 <code>reference</code>（React中的Component）</li>
</ol>
<p>该方法主要位于 <code>then</code> 的函数链执行，执行过后会更新 React 组件中的状态，该方法有一定的副作用，因为它会执行一次<code>setState</code>，
所以真正使用这个函数时通常放在整个链式结构的尾部，而尾部执行操作可让系统处于最终的<strong>加载完成</strong>的状态。</p>
<blockquote>
<p>【巧】技巧代码</p>
</blockquote>
<h3>旧代码</h3>
<pre class="prettyprint source lang-js"><code>
const reference = &quot;从外置传入的 reference &quot;;
Ux.ajaxGet(&quot;/api/pipe&quot;).then(state => {
    reference.setState(state);
    return Ux.promise(state);
});

</code></pre>
<h3>新代码</h3>
<pre class="prettyprint source lang-js"><code>
// 使用 pipe 过后的改动代码
const reference = &quot;从外置传入的 reference &quot;;
Ux.ajaxGet(&quot;/api/pipe&quot;).then(Ux.pipe(reference));

</code></pre>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        
        <th>Attributes</th>
        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>arguments</code></td>
            

            <td class="type">
            
                
<span class="param-type">arguments</span>


            
            </td>

            
                <td class="attributes">
                
                    &lt;optional><br>
                

                

                
                </td>
            

            

            <td class="description last"><p>可变长度参数</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回一个Promise</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".prevent"><span class="type-signature">(static) </span>prevent<span class="signature">(event)</span><span class="type-signature"> &rarr; {Object}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「标准」<code>Ux.prevent</code></h2>
<p>特殊二义性函数「Ambiguity」，该函数的输入会有两种类型，其实第一种方式应用特别多：</p>
<ul>
<li>如果传入的是HTML中的<code>native</code>本地函数，通常在<code>Button</code>的onClick中会被传入。</li>
<li>如果传入的是Object数据，那么直接返回该Object数据。</li>
</ul>
<p>这个函数读取数据有另外的一个API来实现<code>ambEvent</code>，所以这里只是为了执行单纯的方法，它执行的核心代码为<code>event.preventDefault()</code>。</p>
<pre class="prettyprint source lang-js"><code>     // 绑定事件
     const onClick = (event) => {
         Ux.prevent(event);
     }
     // 直接传入参数
     const onForm = (params = {}) => {
         const request = Ux.prevent(params);
     }
</code></pre>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>event</code></td>
            

            <td class="type">
            
                
<span class="param-type">Event</span>
|

<span class="param-type">Object</span>


            
            </td>

            

            

            <td class="description last"><p>传入事件或对象</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回对象信息</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Object</span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".promise"><span class="type-signature">(async, static) </span>promise<span class="signature">(arguments<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「标准」<code>Ux.promise</code></h2>
<p>多义性方法，用于返回不同结果的 Promise，多用于函数链中，该方法只对 1,2,3 的长度有效，
不在这个长度范围内时会直接返回 <code>Promise.reject</code> 的异常信息。</p>
<ol>
<li>长度为<code>1</code>，直接返回<code>new Promise</code>，将传入对象封装成 Promise 返回，同步转异步。</li>
<li>长度为<code>2</code>，使用 Supplier 和第二参直接生成 Promise 返回（延迟异步，同步转异步）。</li>
<li>长度为<code>3</code>，一般用于 Monad 函数链，通常在状态迁移中处理。</li>
</ol>
<h3>长度1</h3>
<pre class="prettyprint source lang-js"><code>const user = {
    username: &quot;Lang Yu&quot;
};
const promise = Ux.promise(user);
</code></pre>
<h3>长度2</h3>
<pre class="prettyprint source lang-js"><code>const supplier = (params = {}) => {

     // 构造新的 Promise
     return Ux.ajaxGet(&quot;/api/test/:key&quot;, params);
};
const promise = Ux.promise(supplier, {key:&quot;user.id&quot;});
</code></pre>
<h3>长度3</h3>
<blockquote>
<p>【巧】技巧代码</p>
</blockquote>
<h4>旧代码</h4>
<pre class="prettyprint source lang-js"><code>
const state = {};
Ux.ajaxGet(&quot;/api/test&quot;).then(response => {
    state.$data = response;
    return Ux.promise(state);
})
</code></pre>
<h4>新代码</h4>
<pre class="prettyprint source lang-js"><code>const state = {};
Ux.ajaxGet(&quot;/api/test&quot;)
     .then(response => Ux.promise(state, &quot;$data&quot;, response));
</code></pre>
<h4>使用场景分析</h4>
<p>该API提供的方法在整个Promise链中为高频使用方法，他的使用场景有很多，主要是用于修正代码编写风格，使用场景如下：</p>
<ol>
<li>直接将一个对象Object/Array等转换成带有异步Promise的数据结构，可直接调用<code>.then</code>的API。</li>
<li>长度2的使用场景主要用于切面AOP的编程，通常在很多场景中需要执行多维度构造，特别是中间维度的Promise的构造过程。</li>
<li>长度3的使用场景则通常用于<code>componentDidMount</code>的生命周期中，用于实现挂载流程，如<code>response -&gt; state[key] = response</code>的结构。</li>
</ol>
<p>该方法存在的意义在于封装了ES6中出现的Promise流程，方便整体调用，Zero Ui的理念是封装第三方，那么第三方的内容封装越多，开发人
员对本身框架的操作程度会越过，其实第一种应用是最常用的，其次是配置化流程中通常使用第二和第三种流程。</p>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        
        <th>Attributes</th>
        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>arguments</code></td>
            

            <td class="type">
            
                
<span class="param-type">arguments</span>


            
            </td>

            
                <td class="attributes">
                
                    &lt;optional><br>
                

                

                
                </td>
            

            

            <td class="description last"><p>可变长度参数</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回最终的 Promise</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".ready"><span class="type-signature">(async, static) </span>ready<span class="signature">(state)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「引擎」<code>Ux.ready</code></h2>
<p>在 Zero Extension 中，内置了配置准备状态，state 中的 $ready，当界面 componentDidMount 执行完成后
会将 $ready 设置成 true，该函数几乎是整个Zero Ui的核心，主要用于设置生命周期的完整。</p>
<ol>
<li>$ready = false：等待配置完成。</li>
<li>$ready = true：配置执行完成，执行过程可以是异步</li>
</ol>
<h3>旧代码</h3>
<pre class="prettyprint source lang-js"><code>const key = &quot;1&quot;;

Ux.ajaxGet(&quot;/api/user&quot;,key).then(state => {
     state.$ready = true;
     return Ux.promise(state);
});
</code></pre>
<h3>新代码</h3>
<pre class="prettyprint source lang-js"><code>// 使用 ready 过后的改动代码
const key = &quot;1&quot;;

Ux.ajaxGet(&quot;/api/user&quot;,key).then(Ux.ready);
</code></pre>
<p>该方法只能作为<code>Monad</code>的中间节点，不可用于尾部节点或开始节点，只能处于函数链的中间环节，Zero中常用的一段代码如：</p>
<pre class="prettyprint source lang-js"><code>// 下边代码是常用代码，可设置 $ready = true 来实现准备完成
&lt;Promise>.then(Ux.ready).then(Ux.pipe(this));
</code></pre>
<blockquote>
<p>在React组件的生命周期中，componentDidMount会执行Ajax的异步操作，到最后设置<code>$ready=true</code>的标识来表示回调
完成，而这种回调完成刚好可应用于当前组件，也就是说当<code>$ready=true</code>时，状态加载彻底完成。</p>
</blockquote>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>state</code></td>
            

            <td class="type">
            
            </td>

            

            

            <td class="description last"><p>处理之前的原始状态信息，函数链上的 Monad</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回一个新的 Promise</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".signature"><span class="type-signature">(static) </span>signature<span class="signature">(uri, method, params)</span><span class="type-signature"></span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <p>##「标准」<code>Ux.signature</code></p>
<p>Zero UI中的RESTful 数字签名功能专用函数。</p>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        
        <th>Default</th>
        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>uri</code></td>
            

            <td class="type">
            
                
<span class="param-type">String</span>


            
            </td>

            

            
                <td class="default">
                
                </td>
            

            <td class="description last"><p>待签名的路径信息。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>method</code></td>
            

            <td class="type">
            
                
<span class="param-type">String</span>


            
            </td>

            

            
                <td class="default">
                
                    <code>GET</code>
                
                </td>
            

            <td class="description last"><p>待签名的方法信息。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>params</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            

            
                <td class="default">
                
                </td>
            

            <td class="description last"><p>待签名的方法参数。</p></td>
        </tr>

    
    </tbody>
</table>



















        
            

    

    <h4 class="name" id=".token"><span class="type-signature">(static) </span>token<span class="signature">()</span><span class="type-signature"> &rarr; {String}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <p>##「标准」<code>Ux.token</code></p>
<p>返回安全请求中的令牌信息，最终会根据应用模式处理成 Authorization 的计算值。</p>
</div>

























<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回当前用户登录过后的令牌<code>token</code>信息。</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">String</span>


    </dd>
</dl>

    



        
    

    

    
</article>

</section>




    
    
</div>

<br class="clear">

<footer>
    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.6</a> on Fri Apr 15 2022 15:55:07 GMT+0800 (China Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
</footer>

<script>prettyPrint();</script>
<script src="scripts/polyfill.js"></script>
<script src="scripts/linenumber.js"></script>

<script src="scripts/search.js" defer></script>



</body>
</html>